带系统调用的c ++命令行

时间:2012-03-21 18:15:51

标签: c++ shell

我正在用c ++编写一个shell,我需要一个构造函数用于我的CommandLine类,它解析来自istream的命令,然后使用calloc()和free()系统调用来动态创建argc和argv变量。我没有得到如何使用系统调用来做到这一点,没有教程帮助。

1 个答案:

答案 0 :(得分:1)

这是一个非常类似于你所要求的例子。我在这里找到了它:http://www.cplusplus.com/reference/clibrary/cstdlib/calloc

  

函数calloc

     

void * calloc(size_t num,size_t size);

     

为内存中的数组分配空间为内存分配一块内存   num个元素的数组,每个元素的大小都是字节长,并初始化   它的所有位都为零。

     

有效的结果是零初始化内存的分配   块(num * size)bytes。

     

参数

     

NUM       要分配的元素数。尺寸       元素的大小。

     

返回值指向由函数分配的内存块的指针。   此指针的类型始终为void *,可以强制转换为   所需类型的数据指针,以便可解除引用。如果   函数无法分配请求的内存块,为NULL   返回指针。

     

实施例

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

/* calloc example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  int i,n;
  int * pData;
  printf ("Amount of numbers to be entered: ");
  scanf ("%d",&i);
  pData = (int*) calloc (i,sizeof(int));
  if (pData==NULL) exit (1);
  for (n=0;n<i;n++)
  {
    printf ("Enter number #%d: ",n);
    scanf ("%d",&pData[n]);
  }
  printf ("You have entered: ");
  for (n=0;n<i;n++) printf ("%d ",pData[n]);
  free (pData);
  return 0;
}