两个程序同时运行

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次)时,停止。


这个问题应该怎么处理?我现在只能手工做到,如何让程序自己跑呢?谢谢了。。
...全文
272 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.....

69,371

社区成员

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

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