当前位置:编程问答 > C/C++ >

如何利用Linux控制台调用C/C++程序?

问题:是否是通过shell脚本来写程序来调用我的C/C++程序呢? 假设要调用的是我的C/C++程序中的一个有参数的函数,是否可以在控制台输入这个函数的几个参数而对这个函数进行功能测试呢? 有些急,找了些资料都无解,还请大家帮忙!非常感谢!
补充:我想写一个测试类去测试我程序的某个功能模块,我想知道可不可以用命令在console调用这个测试类,设置各种参数或条件去测试那个功能模块,也可以说是希望通过console实现多个测试用例的意思

还麻烦大家把方法说得尽量详细一些,或者提供一些相关的文档也可以,谢谢!
追问:我其实是想知道是否可以通过console输入一些命令来调用某个C/C++程序,测试这个程序其中某个函数或者类的功能是否正常
并不是真正意义上的调用某个C/C++函数来做某事是这样的,我想写一个测试类去测试我程序的某个功能模块,我想知道可不可以用命令在console调用这个测试类,设置各种参数或条件去测试那个功能模块,也可以说是希望通过console实现多个测试用例的意思
不仅仅是调试具体的说,我想写一个测试类去测试我程序的某个功能模块,我想知道可不可以用命令在console调用这个测试类,设置各种参数或条件去测试那个功能模块,也可以说是希望通过console实现多个测试用例的意思,请问gdb可以实现吗?我大概看了下您给的那份资料,好像并不是我需要的那种功能请问可以再说得详细些吗?后台进程处理去执行我的测试类的一些功能吗?因为我想不仅仅只有我能够测试,其他人在控制台敲敲命令就可以进行测试了。您有何高见呢?
答案:shell(控制台)不能直接调用什么函数,只能执行文件或命令

写好的程序都是需要编译链接成2进制文件的

最简单的hello.c
#include<stdio.h>
int main(){
printf("hello world!");
return 0;
}
编辑好后输入gcc -o hello hello.c进行编译
gcc是一般linux都有的编译器
-o后面的参数就是生成的2进制文件名,否则文件名是a.out
然后输入./hello就可以运行了

因为二进制文件是可以直接执行的,需要在前面加上 ./ ,表示当前目录

不知道你具体的要求是怎样的
其他:编译完后执行命令
chmod +x 你的程序名
把你的程序的权限修改为可执行
调用的话用./你的程序名 参数
就可以执行

测试功能是否正常最好用gdb命令调试
http://dsec.pku.edu.cn/~yuhj/wiki/gdb.html 可以编写后台进程处理
int32 main( int argc, char * argv [] )
argc是参数个数,argv 是参数内容 要测试,有很多方法,为何想用这种比较难搞的方法? 我给你吧~
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>
char *c="c";
char *cpp="cpp";
char *gcc="gcc ";
char *o="-o ";
char *dot=".";
char *dotdot="..";
void    do_search_dir(char    *path)    {
                 DIR    *dir;
               char    fullpath[1024],currfile[1024];
             struct    dirent    *s_dir;
           struct    stat    file_stat;
            strcpy(fullpath,path);
               dir=opendir(fullpath);
             while    ((s_dir=readdir(dir))!=NULL)    {
               if    ((strcmp(s_dir->d_name,dot)==0)||(strcmp(s_dir->d_name,dotdot)==0))
                       continue;
              sprintf(currfile,"%s/%s",fullpath,s_dir->d_name);
                  stat(currfile,&file_stat);
                  if    (S_ISDIR(file_stat.st_mode))
                      do_search_dir(currfile);
               else
{
char *p;
p=currfile;
while(*p)p++;
while(p>currfile && *p!='.')p--;
if (p!=currfile)p++;
if(strncmp(p,c,1)==0 || strncmp(p,cpp,3)==0)
system(strcat(gcc,strcat(currfile,strcat(o,currfile))));
}
                                        }
                                   closedir(dir);
     }
   int    main()    {
           do_search_dir(dot);

                   return 0;
   }
 

上一个:c语言选择题:
下一个:C语言题目,高手帮忙解题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,