两个程序同时运行

lnnx2006 2010-12-15 01:26:42
大家好:我遇到一个问题,希望大家能够帮助解决。
我现在针对一个问题写了两个程序,1.c和2.c。
首先执行2.c,让2.c读取inputdate.txt文件,并且执行运算后,输出1.txt
接着让1.c读取1.txt,运行后,会产生001.txt
然后让让2.c读001.txt,并且执行运算后,输出2.txt;
接着让1.c读取2.txt,运行后,会产生002.txt,
然后让让2.c读002.txt,并且执行运算后,输出3.txt
……
直到满足1.c中的循环条件(100次)时,停止。


这个问题应该怎么处理?我现在只能手工做到,如何让程序自己跑呢?谢谢了。。
...全文
360 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobo364 2010-12-20
  • 打赏
  • 举报
回复
先写个读取文件,写入文件的函数,linux下完全可以用shell这样执行
#include <stdio.h>

int filecopy();

int main()
{
int a;
a=filecopy();
if(a==0)
{
printf("ok\n");
}
else
{
printf("error\n");
}
system("pause");
return 0;
}

int filecopy()
{
char ch;
FILE *fin;
FILE *fout;

if((fin = fopen("in.txt", "rb+")) == NULL) //也可以以"rt"文本方式打开
{
printf("can't open the file/n");
return (-1);
}

if((fout = fopen("out.txt", "wb")) == NULL) //也可以以"rt"文本方式打开
{
printf("can't open the file/n");
return (-1);
}

while(!feof(fin))
{
ch = fgetc(fin);
if(ch != EOF) //在这里加一个条件判断便可
{
fputc(ch, fout);
}
}

fclose(fin);
fclose(fout);

//system("PAUSE");
return 0;
}
yuguifu 2010-12-20
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int rename(char* oldname,char* newname)
{
char cmd[128] = "";

sprintf(cmd,"ren %s %s",oldname,newname); //ren %s %s是dos下的重命名命令,第一个%s:原文件名,第二个%s:新文件名

if(system(cmd) != 0) //执行命令
{
printf("执行命令:%s 失败 !\n",cmd);
return -1;
}
return 0;
}

int main(int argc,char* argv[])
{
int count = 1;

//char filename[64] = "inputdate.txt";
char oldname[64] = ""; //原文件名
char newname[64] = ""; //新文件名

//判断参数是否正确
if(argc != 2)
{
//printf("The num of parameter wrong!\n");
printf("Usage:%s message\n",argv[0]); //执行程序时:程序名 文件名
return -1;
}


strcpy(oldname,argv[1]);

//strcpy(oldname,filename);


//重命名
for(count = 1;count<=100;count++)
{
sprintf(newname,"%d",count);
strcat(newname,".txt");
//if(strcmp(oldname,filename) == 0)
if(strcmp(oldname,argv[1]) == 0)
{
if(rename(oldname,newname) != 0)
{
printf("rename failed!\n");
return -1;
}
}
if(strstr(oldname,"00") != 0)
{
if(rename(oldname,newname) != 0)
{
printf("rename failed!\n");
return -1;
}
}
memset(oldname,0,sizeof(oldname));
//memset(newname,0,sizeof(newname));
strcpy(oldname,"00");
sprintf(oldname+2,"%d",count);
strcat(oldname,".txt");
if(rename(newname,oldname) != 0)
{
printf("rename failed 1!\n");
return -1;
}
memset(newname,0,sizeof(newname));
}

return 0;
}



swlilike 2010-12-18
  • 打赏
  • 举报
回复
简单说 你的意思是两个程序同时运行分不清哪个干活哪个该停下 因为不是一个程序 没有一个控制变量
如果是一个程序相信你就会用了吧,

连接两个程序让他们同步(相当于一个程序)的办法挺多的 共享内存 互斥变量 进程通讯

当然你这两个程序 用互斥量做 最容易了, 创建互斥体, 用完了之后删除互斥体,再次创建的时候 看互斥体创建成功与否 来确定程序执行。很容易了吧。。

共享内存 稍微容易些 不过需要弄的东西挺多的,你的程序不复杂 就用互斥量吧
lnnx2006 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hqin6 的回复:]

进程间的同步问题?
[/Quote]
有人说是多线程,不知道对不对?谢谢。。。能再详细一点吗?
lnnx2006 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bluerainse 的回复:]

我也觉得,先编好函数,然后循环调用,同时也应该没这么多问题的。
[/Quote]

如果是写成函数的话,是在同一个C程序还是写成两个C程序?写成同一个,就不是我的问题了啊。。。
我现在的是两个程序的问题。。谢谢啦
lnnx2006 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yuguifu 的回复:]

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int rename(char* oldname,char* newname)
{
char cmd[128] = "";

sprintf(cmd,"ren %s %s",oldname,newname);

if(system(cmd) != 0)
{……
[/Quote]

你好,能不能给你写的程序加点注释呢?我看了之后,还感觉不是很清楚,谢谢啦。。。
yuguifu 2010-12-15
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int rename(char* oldname,char* newname)
{
char cmd[128] = "";

sprintf(cmd,"ren %s %s",oldname,newname);

if(system(cmd) != 0)
{
printf("执行命令:%s 失败 !\n",cmd);
return -1;
}
return 0;
}

int main(int argc,char* argv[])
{
int count = 1;

//char filename[64] = "inputdate.txt";
char oldname[64] = "";
char newname[64] = "";

//判断参数是否正确
if(argc != 2)
{
//printf("The num of parameter wrong!\n");
printf("Usage:%s message\n",argv[0]);
return -1;
}


strcpy(oldname,argv[1]);

//strcpy(oldname,filename);

for(count = 1;count<=100;count++)
{
sprintf(newname,"%d",count);
strcat(newname,".txt");
//if(strcmp(oldname,filename) == 0)
if(strcmp(oldname,argv[1]) == 0)
{
if(rename(oldname,newname) != 0)
{
printf("rename failed!\n");
return -1;
}
}
if(strstr(oldname,"00") != 0)
{
if(rename(oldname,newname) != 0)
{
printf("rename failed!\n");
return -1;
}
}
memset(oldname,0,sizeof(oldname));
//memset(newname,0,sizeof(newname));
strcpy(oldname,"00");
sprintf(oldname+2,"%d",count);
strcat(oldname,".txt");
if(rename(newname,oldname) != 0)
{
printf("rename failed 1!\n");
return -1;
}
memset(newname,0,sizeof(newname));
}

return 0;
}



刚刚写完,不知道对你有没有帮助
要求只针对.txt文件(暂时),你可以自己修改,同时文件与程序要在同一目录中!!!
太乙 2010-12-15
  • 打赏
  • 举报
回复
进程间的同步问题?
luciferisnotsatan 2010-12-15
  • 打赏
  • 举报
回复
进程间通讯
或者写个脚本,做你手工做的事
flysnowhite 2010-12-15
  • 打赏
  • 举报
回复
就是循环调用吧。1.c和2.c分别写两个函数进行输入输入输出工作,在main函数中循环调用即可。
Paradise_for_why 2010-12-15
  • 打赏
  • 举报
回复
3楼方法可行
bluerainse 2010-12-15
  • 打赏
  • 举报
回复
我也觉得,先编好函数,然后循环调用,同时也应该没这么多问题的。
野男孩 2010-12-15
  • 打赏
  • 举报
回复
代码里面写循环呗。。。。循环不就是用来干这个的吗?1.txt,2.txt,3.txt.....
【更新至2025年】2001-2025年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线)(300+年报词频统计) 1、时间:2001-2025年 2、来源:上市公司年报 3、参考文献:企业数字化转型与资本市场表现——来自股票流动性的经验证据(吴非) 数字化转型如何影响企业全要素生产率(赵宸宇) 知识产权行政保护与企业数字化转型(甄红线) 4、方法说明:(1)参考吴非老师的做法,对人工智能技术、大数据技术、云计算技术、区块链技术、数字技术运用五个维度76个数字化相关词频进行统计 (2)参考赵宸宇老师的做法,对数字技术应用、互联网商业模式、智能制造、现代信息系统四个维度99个数字化相关词频进行统计 (3)参考甄红线老师的做法,对技术分类、组织赋能、数字化应用等类别下139个数字化相关词频进行统计 5、指标:年份、股票代码、公司简称、行业名称、行业代码、全文-文本总长度、仅中英文-文本总长度、人工智能技术-吴、大数据技术-吴、云计算技术-吴、区块链技术-吴、数字技术运用-吴、数字技术应用-赵、互联网商业模式-赵、智能制造-赵、现代信息系统-赵、技术分类-人工智能技术-甄、技术分类-区块链技术-甄、技术分类-云计算技术-甄、技术分类-大数据技术-甄、组织赋能-人工智能技术-甄、组织赋能-云计算技术-甄、组织赋能-大数据技术-甄、组织赋能-广义数字技术-甄、数字化应用-技术创新-甄、数字化应用-流程创新-甄、数字化应用-业务创新-甄、人工智能、商业智能、图像理解、投资决策辅助系统、智能数据分析、智能机器人、机器学习、深度学习、语义搜索、生物识别技术、人脸识别、语音识别、身份验证、自动驾驶、自然语言处理、大数据、数据挖掘、文本挖掘、数据可视化、异构数据、征信、增强现实、混合现实、虚拟现实、云计算、流计算、图计算、内存计算、多方安全计算、类脑计算、绿色计算、认知计算等300+词频

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧