[c]c语言一些头文件了解和语言编译小case

linux

1.linux中删除一个文件

删除文件夹实例:
rm -rf /var/log/httpd/access
将会删除/var/log/httpd/access目录以及其下所有文件、文件夹

2
删除文件使用实例:
rm -f /var/log/httpd/access.log
将会强制删除/var/log/httpd/access.log这个文件

在linux终端中新建一个c文件:


1,新建要存放.C文件的文件夹。比如:home/hello文件夹。以超级终端权限进入终端,cd/home命令进入home文件夹,ls命令查看home文件夹下所有文件,没有hello文件夹,则进入第二步,有的话,进入第三步。

2,mkdir 

  /home/hello命令新建hello文件夹。ls命令查看是否创建成功。(有的linux系统在进入home文件夹后,mkdir  /hello可以直接在home文件夹下新建hello文件夹,不知对否???)

3,或者使用gedit ,那么命令是 gedit hello.c
vi  hello.c命令在hello文件夹下创建.c文件,此时进入在终端编辑模式,按 i键进入编辑命令,在终端中必须按顺序编辑,终端在编辑时不能前后上下移动。比如:必须按前后顺序输入#include, 万一先输入<>,想要输入stdio.h,只能按Del键删除>,然后按两次字母c重新输入,如果在其他行错误输入,可以先按Del,再按字母d删除多余行的字母(具体什么原因,待高人解答!)接下来就是编辑了,输完之后,按 ESC,然后按shift+冒号,提示为冒号,输入wq(保存并退出,不保存则为q!),系统返回终端!
#include

void main()
{
printf("hello,world!\n");
}

4,ls命令查看.c文件是否创建成功。成功,进入第五步;否则,重复第三步。

5,编译命令为gcc -o 文件名(不带后缀) 文件名 ,如上面的:gcc -o hello  hello.c ,若程序有错,则重复第三步。如果没有安装GCC编译器,请自行安装!否则,进入第六步。

6,若成功编译,则使用 . /文件名 ,如:./ hello,记住是一点加斜杠,进行运行。至此,你可以看到终端中显示hello,world!

3.使用vim,vim是vi过来的。然后vim超级好用!!!!1

创建文件 vim helloworld.c vim sjkdj.text  这样的话是创建

进入到文件内部。下面有张图很好的显示了用法。

输入i进入编辑的模式,编辑完成再输入esc完成编辑,在这shift冒号,wq是保存并且退出。


关于命令解释系统,代码分析

1.引入知识点piple是

定义:piple是具有亲缘关系的进程之间的通讯关系。

实现:循环结构:

pipe.c中有很多函数,其中有两个函数比较重要,即管道读函数pipe_read()和管道写函数pipe_wrtie()。


pipe只能学习浅层的东西,必须引入fork()来学习。

关于fork的一个例子:

  1. int main ()   
  2. {   
  3.     pid_t fpid; //fpid表示fork函数返回的值   pit_t 就是int只是被放在头文件中被宏定义了
  4.     int count=0;  用于观察参数的变化
  5.     fpid=fork();   //fork一个新的进程并且返回一个fpid,并且只是被调用一次,就会有返回两个值
  6.     if (fpid < 0)   
  7.         printf("error in fork!");   
  8.     else if (fpid == 0) {  
  9.         printf("i am the child process, my process id is %d/n",getpid());   
  10.         printf("我是爹的儿子/n");//对某些人来说中文看着更直白。  
  11.         count++;  
  12.     }  
  13.     else {  
  14.         printf("i am the parent process, my process id is %d/n",getpid());   
  15.         printf("我是孩子他爹/n");  
  16.         count++;  
  17.     }  
  18.     printf("统计结果是: %d/n",count);  
  19.     return 0;  

    1)在父进程中,fork返回新创建子进程的进程ID;
    2)在子进程中,fork返回0;
    3)如果出现错误,fork返回一个负值;

于是被利用于fpid判断子父进程,父进程返回的fpid是子进程的id,而子进程返回的是0,返回小于0为错误。

具体产生fpid不同的原因,可以用链表的知识解释:父进程fpid指向子进程,于是返回子进程的id。

子进程的子进程为null,所以它的fpid为0。

子进程拷贝了父进程,子进程中就相当于父进程的拷贝。

fork()例子2:

  1. int main(void)  
  2. {  
  3.    int i=0;  
  4.    printf("i son/pa ppid pid  fpid/n");  
  5.    //ppid指当前进程的父进程pid  
  6.    //pid指当前进程的pid,  
  7.    //fpid指fork返回给当前进程的值  
  8.    for(i=0;i<2;i++){  
  9.        pid_t fpid=fork();  
  10.        if(fpid==0)  
  11.            printf("%d child  %4d %4d %4d/n",i,getppid(),getpid(),fpid);  
  12.        else  
  13.            printf("%d parent %4d %4d %4d/n",i,getppid(),getpid(),fpid);  
  14.    }  
  15.    return 0;  
  16. }

就是2^n-1的过程,刚开始是1,2,4。这个是最初的想,但经过前辈的博客后,发现个数不是这样的。


结果如下:

i son/pa ppid pid  fpid
    0 parent 2043 3224 3225
    0 child  3224 3225    0
    1 parent 2043 3224 3226
    1 parent 3224 3225 3227
    1 child     1 3227    0
    1 child     1 3226    0

前4个都能看懂,但是最后两个的ppid 父进程id为什么会变成1呢?

前辈的博客中写道,因为在两次循环过后,就死亡了。系统会将它的父进程置为1。

具体我不懂,后面再理会。

1.extern 函数或者变量 这样的话在别的引用头文件中的文件 可以直接使用

2.



c语言头文件:

1.stdio (其中的函数占了标准库中的1/3)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值