天嵌 ARM开发社区

 找回密码
 注册
查看: 4454|回复: 13

如何给一个应用程序传递信息·

[复制链接]
福大牛二爷 发表于 2012-12-27 09:45:10 | 显示全部楼层 |阅读模式
我的text.sh 是个循环,应用程序b也是个循环;想实现在text.sh每一次的循环后给b发送消息,说我的(text.sh)一次循环好了;b接到这个信息后,开始这一次循环;b这一次循环结束就继续等待text.sh发来的信息,只有再次收到了才会继续下一次循环;text.sh也是收到了b发给它的信息后才继续下一次循环········这样执行下去。
这些东东没学过多少,不大了解,希望高人给我指点下,这个是否可以实现?我要往哪个方向走!多谢了!
 楼主| 福大牛二爷 发表于 2012-12-27 09:45:53 | 显示全部楼层
wait online······
回复

使用道具 举报

TQ-ZQL 发表于 2012-12-27 10:30:43 | 显示全部楼层

回帖奖励 +1

应该可以吧,你一个脚本中写一个循环,用echo 输出一个参数给另个脚本,根据这个参数判断是不是应该启动循环。不过这脚本语言我也不太熟。
回复

使用道具 举报

 楼主| 福大牛二爷 发表于 2012-12-27 10:40:54 | 显示全部楼层
我一个是脚本test.sh;另外一个是应用程序b.exe;
回复

使用道具 举报

 楼主| 福大牛二爷 发表于 2012-12-27 10:42:15 | 显示全部楼层
TQ-ZQL 发表于 2012-12-27 10:30
应该可以吧,你一个脚本中写一个循环,用echo 输出一个参数给另个脚本,根据这个参数判断是不是应该启动循环 ...

我一个是脚本test.sh;另外一个是应用程序b.exe;
回复

使用道具 举报

TQ-ZQL 发表于 2012-12-27 10:43:11 | 显示全部楼层
那你做一个tmp文件一个向文件写一个读。
回复

使用道具 举报

 楼主| 福大牛二爷 发表于 2012-12-27 10:56:16 | 显示全部楼层
TQ-ZQL 发表于 2012-12-27 10:43
那你做一个tmp文件一个向文件写一个读。

那如果是两个应用程序之间,实现上面的功能么?
回复

使用道具 举报

TQ-ZQL 发表于 2012-12-27 11:23:30 | 显示全部楼层
本帖最后由 TQ-ZQL 于 2012-12-27 15:42 编辑

那也一样的。也可能用其它方式像共享内存,管道,socket等
回复

使用道具 举报

 楼主| 福大牛二爷 发表于 2012-12-27 11:26:36 | 显示全部楼层
本帖最后由 福大牛二爷 于 2012-12-27 11:38 编辑

哦  好的!谢谢啊!我试试~~
回复

使用道具 举报

 楼主| 福大牛二爷 发表于 2012-12-27 11:45:15 | 显示全部楼层
TQ-ZQL 发表于 2012-12-27 11:23
那也一样的。

再问下:
在shell中我按顺序执行两个程序
./a
./b
是要a执行完毕了,才会接下去执行b的,
如果我在应用程序中用函数调用这两个应用程序,会不会是这样的呢?
回复

使用道具 举报

TQ-ZQL 发表于 2012-12-27 15:43:51 | 显示全部楼层
会的吧,你试下就知道了
回复

使用道具 举报

 楼主| 福大牛二爷 发表于 2012-12-28 16:46:24 | 显示全部楼层
后来用的system()调用程序可以了!
回复

使用道具 举报

 楼主| 福大牛二爷 发表于 2012-12-31 14:28:23 | 显示全部楼层
本帖最后由 福大牛二爷 于 2012-12-31 14:29 编辑
TQ-ZQL 发表于 2012-12-27 10:43
那你做一个tmp文件一个向文件写一个读。


版主您好,我想问下一个进程里面可以 创建两个有名管道么?因为我弄了两个管道出现了点问题,来此确认下,建立两个管道是否可以!
回复

使用道具 举报

 楼主| 福大牛二爷 发表于 2012-12-31 15:24:47 | 显示全部楼层
#define FIFO1 "./myfifo1"
main(int argc,char** argv)
{char buf_r[100],w_buf[100]="1111111";
        int  fd,fd1;
        int  nread,nwrite;
/* 创建管道1*/
unlink(FIFO1); //删除文件
if((mkfifo(FIFO1,O_CREAT|O_EXCL)<0)&&(errno!=EEXIST))
         printf("cannot create fifoserver1\n");
printf("FIFO1 create\n");
/*打开管道1*/
fd1=open(FIFO1,O_WRONLY|O_NONBLOCK,0);       
printf("FIFO1 createsdfdsfsdf\n");
while(1)
{
/*...............................................
...............................................
...............................................*/
        sleep(1);

        /* 向管道1 写入数据 */
if((nwrite=write(fd1,w_buf,100))==-1)
        {printf("FIFO1 create...\n");
        if(errno==EAGAIN)
        printf("The FIFO has not been read yet.Please try later\n");
        }
else
  printf("write %s to the FIFO1\n",w_buf);               
}
}
您说这里那里有错?为什么总是写入有错误???
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-7-7 17:44 , Processed in 2.086685 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表