c语言中用fork()和excel()实现控制台的指令 关于c语言中fork()和execv()的问题

作者&投稿:驷峡 (若有异议请与网页底部的电邮联系)
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>

#define BUFFERSIZE 40

int main()
{
char request,ch;
char leftover[BUFFERSIZE];
int pid, status;

printf("Please Enter Command:\n");
scanf("%c", &request);
ch = getchar();
while(request != 'Q')
{
fgets(leftover, sizeof(leftover), stdin);
pid = fork();
if(pid > 0)
{
wait(&status);
printf("Please Enter Command:\n");
scanf("%c", &request);
ch = getchar();
}
else if (pid == 0)
{
if (execl("/bin/sh", "sh", "-c",leftover,(char *)0) == -1)
{
printf("%s",strerror(errno));
exit(-1);
}
exit(-1);
}
else
exit(-1);
}
printf("GoodBye!\n");
return 0;
}
在linux下vi编辑器下编写代码,gcc编译运行测试过,希望对你有帮助。上面的编程主要是利用了进程编程的一些知识,推荐看看《Unix环境高级编程》(APUE),相信会对编程有很大的提高,大家共同进步。

C语言中怎么用fork()创建子进程运行程序并且计算时间~

1、fork一般用于处理多线程任务。比如在网络中,需要同时发送多种请求报文,则可以fork出子进程来进行发包任务,而父进程则直接去做自己的逻辑任务。
2、所谓运行时间指的是已经运行了多长时间还是从进程创建到进程退出的时间?输入的程序是由程序启动还是已经在运行的
,如果是已经存在的,就试着去获取进程创建时间(WIN32
提供这样的API),然后获取当前时间,就可以得到进程已经运行了多久。如果是程序启动的,那就用类似time这种函数打桩就可以了。

fork----->fork----->fork加入进程Afork出了进程B,然后进程B又fork出了进程C,进程C又fork出了进程Dpipe是管道,只有一个入口,一个出口。可以把入口和出口分别放到父子进程中。父进程负责读,子进程负责写。或者子进程读,父进程写。你的例子里,在进程A里创建管道PipeA,然后fork出进程B。进程AB之间使用PipeA通信。进程B再创建PipeB,然后进程BC之间使用PipeB通信。进程C再创建PipeC,然后进程CD之间使用PipeC通信。如果想把进程A的数据传递给进程D,那么应该:进程A向PipeA写入数据,进程B从PipeA中读取数据,然后再写入PipeB,进程C从PipeB中读取数据,然后再写入PipeC,进程D从PipeC中读取数据

c语言错误 expected identifier or '(' before 'else‘
答:括号不匹配,,,在检查下括号 修改后为:if(pid<0)printf("fork error");else if(pid == 0){ //这里少了一个 “{”吧 printf("new program.\n");excel("/root/fork.out","fork.out",0);exit(0);} else { int e=waitpid(pid,&result,0);printf("Child process PID:%d.\n"...

如何将excel转换成宏业
答:c:在下一对话框中通过路径找到需导入的Excel文档并打开,进入到XLS文件内容显示窗口 d:选择对应的字段(软件中与XLS文件的对应关系)并确定 e:进入到从文档套用定额窗口,进一步整理导入内容(只保留项目/定额内容)→选择项目/定额库→导入时使用字段值设置→点击导入工程计价表按钮 ②:在上面e操作步骤中...

GitHub PLpgSQL项目推荐|103976个英语单词库(sql/csv/Excel版)
答:标星趋势 关注(watch) :2 拷贝(fork) :34 贡献人数 :2 (三人行,必有我师焉,作者在期待你的加入)仓库大小 :6 MB 主要开发语言:PLpgSQL 语言分布:PLpgSQL:100.00 代码提交周期分布 :2星 103976 103976个英语单词库 (sql版,csv版,Excel版) 库表中包含英文单词,中文翻译,单词的...

Java和C + +有什么区别?
答:并且编程环境更为简单。我在这里不能完全列出不同之处,仅列出比较显著的区别: 1.指针 JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,...

linuxc读取文件,解析linuxc读取文件
答:c语言中进行文件读写的函数是?C语言对文件进行读取之前需要先打开文件,然后再进行读写,读写完之后关闭文件。可以使用两组函数实现:一、C语言库函数打开文件:fopen读写(一般对应成对使用):fgetc---fputcfgets---fputsfread---fwrite关闭文件:fclose 二、Linux系统函数打开文件:open读写(一般对应...

指纹考勤机导出的excel工作表被保护了,没有密码,怎么破解?虚心求教破解...
答:需要先解除密码方法如下(试试看,我 版是这样弄的):打开excel录制宏--停止录制--打开VB编辑器--将以下代码覆盖黏贴到模块 中(要覆盖粘帖)SubPasswordBreaker()DimiAsInteger,jAsInteger,kAsIntegerDimlAsInteger,mAsInteger,nAsIntegerDimi AsInteger,i AsInteger,i AsIntegerDimi AsInteger,i As...

如何在EXCEL表格中使用COMBIN函数
答:一、如何在EXCEL表格中使用COMBIN函数 一、combin组合函数的语法 函数功能:计算从给定数目的对象中提取若干对象的组合数。 利用函数combin可以确定一组对象所有...fork=j1to6 forl=k1to7 form=l1to8 activecell.formular1c1=h&"-"&i&"-"&j& "-"&k&"-"&l&"-"&m activecell.offset(1,0).select nextm...

电脑破解excel工作表密码的方法
答:excel是办公软件Microsoftoffice的组件之一,win7正式版系统电脑在工作中使用excel工作表的时候,一些重要的文件我们都会给它设置上密码。但是时间久了,容易把密码忘记了,那么有什么办法可以破解excel工作表密码呢?接下去我们一起分享电脑破解excel工作表密码的方法。具体方法如下:1、打开excel工作表;2、...

windows10系统下怎样破解excel密码
答:windows10系统下怎样破解excel密码?一位用户反馈自己在win10系统中遇到了无法打开Excel文档的情况,提示需要输入密码才能查看,感觉非常烦恼。接下来,小编将给大家详细介绍win10破解excel密码的方法。推荐:win10系统下载中文步骤如下:1、打开加密的Excel,然后用快捷命令Alt+F8打开宏命令窗口,如图所示:2、...

excel 排列组合公式?
答:EXCEL有排列和组合函数。排列函数为PERMUT函数,组合函数为COMBIN函数。组合函数:计算从给定数目的对象集合中提取若干对象的组合数。利用函数 COMBIN 可以确定一组对象所有可能的组合数。语法:COMBIN(number,number_chosen)排列函数:返回从给定数目的对象集合中选取的若干对象的排列数。排列为有内部顺序的对象...