| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 505 人关注过本帖
标题:一个unix的简单程序,有个问题不能理解望赐教
取消只看楼主 加入收藏
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
结帖率:88.89%
收藏
已结贴  问题点数:10 回复次数:2 
一个unix的简单程序,有个问题不能理解望赐教
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/wait.h>
#define MAXLINE 4096
int main(void){
    pid_t pid;
    char buf[MAXLINE];
    int status;
    printf("%%");
    while(fgets(buf,MAXLINE,stdin) != NULL)
    {
        if(buf[strlen(buf) - 1] == '\n')
            buf[strlen(buf)-1] = 0;
        if((pid = fork()) < 0){         //创建子进程
            //err_sys("fork error");
            printf("fork error \n");
        }else if(pid == 0){
            //执行命令
            execlp(buf,buf,(char *) 0);          //就是这里,函数execlp执行成功,就不再执行后面的部分,如果失败则执行后面的部分。
                                                 //为什么函数执行成功则不执行后面的语句?这里没有控制的语句吧!
                                                  //难道是execlp函数里面设置有?还是C语言的一种语法

            //err_ret("couldn't execute: %s \n'",buf);
            printf("couldn't execut: %s \n",buf);
            exit(127);
        }
        //父进程
        //printf("开始终止进程 Process ID: %s\n",getpid());
        if((pid = waitpid(pid,&status,0)) < 0){
            //err_sys("waitpid error");
            printf("waitpid error \n");
        }
        printf("%%");
    }
    exit(0);

}
搜索更多相关主题的帖子: include status 
2013-07-17 19:21
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 2楼 love云彩
..............没那么简单
2013-07-17 20:18
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 5楼 czz5242199
有道理哦,明天查查看
2013-07-18 00:01
快速回复:一个unix的简单程序,有个问题不能理解望赐教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036330 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved