求助一道linux C语言的错误问题

zachary1984 zachary1984 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
linux下编写C程序:在屏幕上显示提示符(prompt),接受从键盘输入,将从键盘输入的命令转化成(生成)新的进程,并且执行(运行)的这么一个程序。simplesh

如下:
$ ./simplesh
PROMPT>
PROMPT> date
Wed May 27 0:30:10 JST 2009
PROMPT> ls
…

要点:
1.根据下面所示,使用fork,在子进程使用exec系统调用,将子进程置换成输入的命令的进程
int pid;

if ((pid = fork()) == 0) {
/* 子进程的处理*/
} else if (pid >= 1) {
/* 父进程的处理*/
} else {
/* 错误处理*/
}
---------------------------------------------------------
下面是朋友写的代码,但是编译出错,请高手帮忙看一下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main()
{
int pid;
char cmd[100] = {0};
char* ptr;
while(1)
{
ptr = cmd;
//输入prompt
printf("PROMPT>");
   //判断是否输入空格
while((*(ptr++)=getchar())!='\n');
*ptr = 0;
   //输入q,退出
if(!strcmp(cmd,"q\n"))
{
printf("exit\n");
return 0;
}
if ((pid = fork()) == 0)
{
 exec(cmd);
return 0;
}
else if (pid >= 1)
{
//等待子进程退出
  waitpid(-1, NULL,0);
}
else
{
puts("error");
return -1;
/* 错误处理*/
}
}
}
...全文

相关推荐

linux c语言错误处理

六、文件操作错误在Linux环境下,文件操作是C语言编程的重要部分。文件打开失败、读写错误、文件未找到等问题需特别关注。

陌上花开缓缓归以

基于C语言中段错误的问题详解

对于多线程程序,使用互斥锁等同步机制来保护共享资源,防止数据竞争导致的错误。通过理解内存管理和指针操作的基本原理,开发者可以更有效地识别和解决C语言中的段错误问题。

weixin_38695061

Linux C语言 内存越界问题总结

Linux C语言内存越界问题总结一、内存越界的定义和分类内存越界是指在计算机程序中,因为访问或修改了超出变量或数组的边界而导致的错误。内存越界可能会导致程序崩溃、内存泄漏、数据丢失等严重问题。

菜鸟小王

Linux系统下C语言gets函数出现警告问题的解决方法

"Linux系统下C语言使用gets函数时遇到警告,解决方案是改用其他安全的输入函数"在Linux系统中编程,特别是在C语言环境中,安全性和稳健性是至关重要的。当我们遇到像`gets()`这样的函

weixin_38619467

LINUX C语言 DNS

LINUX C语言 DNS本文使用的glibc版本是2.19资源下载地址1.GNU LIB C 手册[http://ftp.gnu.org/old-gnu/Manuals/glibc-2.2.3/pdf/libc.pdf]其实这算是LINUX下C语言的库函数手册,大部分函数的简单说明都能在里面查到。另外,如果你的环境是在liunux下,会有更简单的办法,就是man命令请看后面的内容。另外,这个版本的

SourceHunter
评论 10
收藏 已收藏
分享
返回顶部
zachary1984
Linux/Unix社区 23,224 成员 74,535 内容