使C fork代码适应Java程序

使C fork代码适应Java程序,第1张

概述我正在尝试使用 Java创建一个小程序来分叉两个新的子进程.这是一个初学者的编程类,他的教程是C语言,所以我正在寻找一些帮助来理解这段代码试图做什么以及将它适应基于Java的程序的最佳方法(最终建立在它). #include <sys/types.h>#include <stdio.h>#include <unistd.h>int main(){pid t pid; /*f 我正在尝试使用 Java创建一个小程序来分叉两个新的子进程.这是一个初学者的编程类,他的教程是C语言,所以我正在寻找一些帮助来理解这段代码试图做什么以及将它适应基于Java的程序的最佳方法(最终建立在它).

#include <sys/types.h>#include <stdio.h>#include <unistd.h>int main(){pID t pID;    /*fork a child process*/    pID = fork();    if (pID < 0) { /*error occurred*/        fprintf(stderr,"Fork Failed");        return 1;    }    else if (pID == 0) {/*child process */        execlp("/bin/ls","ls",NulL);     }    else { /*parent process*/        /*parent will wait for the child to complete */        wait(NulL);        printf("Child Complete");    }    return 0;}

更新:

我应该为每个子进程及其父进程附加一个ID,在子进程执行时打印信息,并在终止时打印终止通知.我现在看到上面的这段代码列出了当前目录的内容,并在进程终止时打印“Child Complete”.整个目录的列表是否被视为一个进程?如果是这样,第二个新的子进程在哪里/如何进入图片?

解决方法 在Java中,这可能看起来像 –

public static voID main(String[] args) {    try {        Process p = Runtime.getRuntime().exec("/bin/ls");        final inputStream is = p.getinputStream();        Thread t = new Thread(new Runnable() {            public voID run() {                inputStreamReader isr = new inputStreamReader(is);                int ch;                try {                    while ((ch = isr.read()) != -1) {                        System.out.print((char) ch);                    }                } catch (IOException e) {                    e.printstacktrace();                }            }        });        t.start();        p.waitFor();        t.join();        System.out.println("Child Complete");    } catch (Exception e) {        e.printstacktrace();    }}
总结

以上是内存溢出为你收集整理的使C fork代码适应Java程序全部内容,希望文章能够帮你解决使C fork代码适应Java程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1216316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存