c语言中,一个程序A怎么控制另一个程序B运行。

我的意思是说A程序运行到某处,用A中的参数作为程序B的输入,得到B的输出。记得是c啊。

这在C中很容易实现。

一、将A中的数据作为调用函数B的参数,经过B处理后,返回到A。假定A为主函数main(),B为排序函数Sort(int a[],int n),在A中给数组a[]赋值,通过函数B进行排序,完成后返回到A。

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

#define MAXlen 100

void Sort(int *x, int n) {     //选择排序
int i, j, min;
int t;
for (i = 0; i < n - 1; i++) {     // 要选择的次数:0~n-2共n-1次 
min = i;                      // 假设当前下标为i的数最小,比较后再调整 
for (j = i + 1; j < n; j++) { //循环找出最小的数的下标是哪个
if (*(x + j) < *(x + min)) {   
min = j;              // 如果后面的数比前面的小,则记下它的下标
}
}  
if (min != i) {               // 如果min在循环中改变了,就需要交换数据
t = *(x + i);
*(x + i) = *(x + min);
*(x + min) = t;
}
}
}

int main() {
int i;
int iArr[MAXlen];
srand((unsigned int)time(NULL));
printf("\n排序前:\n");
for(i = 0 ; i < MAXlen ; i++) {
iArr[i] = (unsigned int)rand() % 1000;
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n");
Sort(iArr,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; i < MAXlen ; i++) {
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n\n");
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-01
不管C语言,还是其他语句,这不可能,也不科学
两个进程是独立的,我可以检测进程的状态,但是你说的这个意思,是程序A给程序B传参,这个没法做到
给你一个折中的办法,程序A在执行到某处的时候,将参数写到一个TXT,程序B里面写一个定时器,扫描指定路径下的那个TXT文件,当TXT存在时,取得数据,然后干掉这个TXT,一次操作完成,明白不?
第2个回答  2013-06-01

可以:

    用多线程来解决,不过这还是同一个程序,只是两个模块不同,

    二个线程可以“同时”工作,不同的任务,当然,父线程可以给子线程

    传递参数。(当然c本身没有多线程的类,但可以调用操作系统API实现多线程)

2..另外,服务器可以与客户端建立,通信管道,来交互

 其实所谓,一个控制别一个,无非是,他们之间的数据交互而已。

你也可以把一个方法调用另一个方法,看成,一个程序控制另一个程序。(这里的控制是有局限的,因为,程序都是写好的,功能也就那些,你不能控制让他实现,自己没有的功能)

第3个回答  2013-06-01
进程将数据共享就是了,这个方法很多啊!

1、管道pipe
2、文件file
3、共享内存 shmget(key_t key, size_t size, int shmflg);

应该还有其他方法,我记不清楚了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网