c语言中,一个程序A怎么控制另一个程序B运行。 20
4个回答
展开全部
这在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;
}
展开全部
不管C语言,还是其他语句,这不可能,也不科学
两个进程是独立的,我可以检测进程的状态,但是你说的这个意思,是程序A给程序B传参,这个没法做到
给你一个折中的办法,程序A在执行到某处的时候,将参数写到一个TXT,程序B里面写一个定时器,扫描指定路径下的那个TXT文件,当TXT存在时,取得数据,然后干掉这个TXT,一次操作完成,明白不?
两个进程是独立的,我可以检测进程的状态,但是你说的这个意思,是程序A给程序B传参,这个没法做到
给你一个折中的办法,程序A在执行到某处的时候,将参数写到一个TXT,程序B里面写一个定时器,扫描指定路径下的那个TXT文件,当TXT存在时,取得数据,然后干掉这个TXT,一次操作完成,明白不?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以:
用多线程来解决,不过这还是同一个程序,只是两个模块不同,
二个线程可以“同时”工作,不同的任务,当然,父线程可以给子线程
传递参数。(当然c本身没有多线程的类,但可以调用操作系统API实现多线程)
2..另外,服务器可以与客户端建立,通信管道,来交互
其实所谓,一个控制别一个,无非是,他们之间的数据交互而已。
你也可以把一个方法调用另一个方法,看成,一个程序控制另一个程序。(这里的控制是有局限的,因为,程序都是写好的,功能也就那些,你不能控制让他实现,自己没有的功能)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
进程将数据共享就是了,这个方法很多啊!
1、管道pipe
2、文件file
3、共享内存 shmget(key_t key, size_t size, int shmflg);
应该还有其他方法,我记不清楚了
1、管道pipe
2、文件file
3、共享内存 shmget(key_t key, size_t size, int shmflg);
应该还有其他方法,我记不清楚了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询