加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从C发送信号到Java

发布时间:2020-12-16 09:41:01 所属栏目:百科 来源:网络整理
导读:所以我有这个 Java程序创建在终端上运行某个C程序的进程(unix),并且我需要在C程序中发生某些事情时(终止之前)通知Java程序.我怎样才能做到这一点?我知道我需要信号,但我对这个问题没有多少经验. 提前致谢! 编辑:这是我在调用进程后对java所做的更改: Inp
所以我有这个 Java程序创建在终端上运行某个C程序的进程(unix),并且我需要在C程序中发生某些事情时(终止之前)通知Java程序.我怎样才能做到这一点?我知道我需要信号,但我对这个问题没有多少经验.

提前致谢!

编辑:这是我在调用进程后对java所做的更改:

InputStream stdout = p.getInputStream();
            InputStreamReader isr = new InputStreamReader(stdout);
            BufferedReader br = new BufferedReader(isr);
            String line = null;
            System.out.println("<INPUT>");
            while ( (line = br.readLine()) != null)
                System.out.println(line);
            System.out.println("</INPUT>");
            int exitVal = p.waitFor();
            System.out.println("Process exitValue: " + exitVal);

当我想通知java时,我在C中做了什么:

char buff[20];
size_t nbytes;
ssize_t bytes_written;
int fd;
strcpy(buf,"This is a testn");
nbytes = strlen(buf);
bytes_written = write(1,buff,nbytes);

但运行后我只得到:

INPUT
/INPUT
Process exitValue: 0

解决方法

其中一种方法是阅读你的C程序的标准输出

Process p = Runtime.getRuntime().exec("c.exe");
    InputStream stdout = p.getInputStream();

现在C程序可以与Java程序通信

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读