linux
1.linux中删除一个文件
删除文件夹实例:
rm -rf /var/log/httpd/access
将会删除/var/log/httpd/access目录以及其下所有文件、文件夹
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
3,或者使用gedit ,那么命令是 gedit hello.c
#include
void main()
{
printf("hello,world!\n");
}
4,ls命令查看.c文件是否创建成功。成功,进入第五步;否则,重复第三步。
5,编译命令为gcc -o 文件名(不带后缀) 文件名 ,如上面的:gcc -o hello
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的一个例子:
- int main ()
- {
- pid_t fpid; //fpid表示fork函数返回的值 pit_t 就是int只是被放在头文件中被宏定义了
- int count=0; 用于观察参数的变化
- fpid=fork(); //fork一个新的进程并且返回一个fpid,并且只是被调用一次,就会有返回两个值
- if (fpid < 0)
- printf("error in fork!");
- else if (fpid == 0) {
- printf("i am the child process, my process id is %d/n",getpid());
- printf("我是爹的儿子/n");//对某些人来说中文看着更直白。
- count++;
- }
- else {
- printf("i am the parent process, my process id is %d/n",getpid());
- printf("我是孩子他爹/n");
- count++;
- }
- printf("统计结果是: %d/n",count);
- return 0;
- }
2)在子进程中,fork返回0;
3)如果出现错误,fork返回一个负值;
于是被利用于fpid判断子父进程,父进程返回的fpid是子进程的id,而子进程返回的是0,返回小于0为错误。
具体产生fpid不同的原因,可以用链表的知识解释:父进程fpid指向子进程,于是返回子进程的id。
子进程的子进程为null,所以它的fpid为0。
子进程拷贝了父进程,子进程中就相当于父进程的拷贝。
fork()例子2:
- int main(void)
- {
- int i=0;
- printf("i son/pa ppid pid fpid/n");
- //ppid指当前进程的父进程pid
- //pid指当前进程的pid,
- //fpid指fork返回给当前进程的值
- for(i=0;i<2;i++){
- pid_t fpid=fork();
- if(fpid==0)
- printf("%d child %4d %4d %4d/n",i,getppid(),getpid(),fpid);
- else
- printf("%d parent %4d %4d %4d/n",i,getppid(),getpid(),fpid);
- }
- return 0;
- }
就是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
前辈的博客中写道,因为在两次循环过后,就死亡了。系统会将它的父进程置为1。
具体我不懂,后面再理会。
1.extern 函数或者变量 这样的话在别的引用头文件中的文件 可以直接使用
2.
c语言头文件:
1.stdio (其中的函数占了标准库中的1/3)