Fork和exec没有产生正确的结果

2024-04-27 21:33:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我要从头开始了。快完成了!但是,我受够了这些不起作用的练习。在关于进程和系统调用的章节中,我们下载了一个python程序,然后运行我们的代码,它将对python进行三次fork和exec,每次它都应该在rss提要中搜索我们在命令行上编写的短语。rss提要是环境变量。当然,我从BBC选了2个,从StackOverflow选了1个。在

这本书显示,我们应该能够用我们想要搜索的短语来调用程序,并且在下一行中,所有匹配项都将显示出来。我得到的不是没有结果,就是奇怪的结果和不可复制的结果。抱歉,包含内容看起来不对。在

我从https://github.com/dogriffiths/rssgossip/zipball/master下载的python代码。在

还是python出了问题????在

C程序:

#include < stdio.h>
#include < string.h>
#include < errno.h>
#include < unistd.h>

int main(int argc, char *argv[]) {
    char *feeds[] = {"http://feeds.bbci.co.uk/news/world/us_and_canada/rss.xml",
                    "http://stackoverflow.com/feeds",
                    "http://feeds.bbci.co.uk/news/technology/rss.xml"};
    int times = 3;
    char *phrase = argv[1];
    int i;

    for (i=0; i<times; i++) {
        char var[255];
        sprintf(var, "RSS_FEED=%s", feeds[i]);
        char *vars[] = {var, NULL};

        //FORK() AND EXEC()
        pid_t pid = fork(); 
        if (pid == -1) {    
            fprintf(stderr, "Could not fork process: %s\n", strerror(errno));
            return 1;
        }
        if (!pid) {         // pid == 0 for child process
            if (execle("/usr/bin/python", "/usr/bin/python", "./rssgossip.py", phrase, NULL, vars) == -1) {
                fprintf(stderr, "Can't run script: %s\n", strerror(errno));
                return 1;
            }
        }
    }
}

下面所有的结果都来自这个程序的同一个编译。提要有时确实会改变,但是我选择了在多个提要中看到的单词,但是只有一次我得到了不止一个的结果。在

《渔网中的鲸鱼》是从这两行的rss条目中得到的,但对我来说它不是格式化的:

如何营救被网缠住的鲸鱼 加拿大队从渔网中营救鲸鱼

所以它应该返回两条线。在

结果在$之后的情况是这样的:我在上面的一行输入了命令,它在一秒钟内什么也没做,然后在下一行给我一个新的提示和结果。然后它就会停止。我等了一会儿,看它是否还在搜索。我不知道我可以输入一个新的命令,所以我按ctrl-C'd

小天鹅:

^{pr2}$

Tags: 代码程序comhttpifincludevarfork
1条回答
网友
1楼 · 发布于 2024-04-27 21:33:31

我建议做的第一件事是检查python代码是否在外部工作。在

这也可以让你知道程序的输入应该是什么。如果你迷路了,Python源代码也应该很容易理解。在

如果它在命令行中使用正确的参数,那么您就知道python程序不是问题所在。这会让你把注意力集中在问题的真正来源上。在

相关问题 更多 >