精华内容
下载资源
问答
  • Linux读取shell命令返回的数据 Linux下编写代码时,有时候需要实现的功能已经有shell命令实现了,我们大可不必自己花费精力去实现这部分功能,直接在函数中调用shell命令并且获取到返回的数据,接下来就可以为所欲为...

    Linux读取shell命令返回的数据

    Linux下编写代码时,有时候需要实现的功能已经有shell命令实现了,我们大可不必自己花费精力去实现这部分功能,直接在函数中调用shell命令并且获取到返回的数据,接下来就可以为所欲为了。

    代码

    /*read linux shell return data*/
    /*author: LK*/
    #define CMD_1	"ifconfig"
    void read_cmd(char * cmd)
    {
    	FILE *stream;
    	//FILE *wstream;
    	char buf[1024];
    	
    	memset(buf, '\0', sizeof(buf));
    	stream = popen(cmd, "r");
    	//wstream = fopen("test_popen.txt", "w+");
    	fread(buf, sizeof(char), sizeof(buf), stream);
    	//fwrite(buf, 1, sizeof(buf), wstream);
    	pclose(stream);
    	//fclose(wstream);
    	printf("%s\n", buf);
    }
    
    int main(void)
    {
    	read_cmd(CMD_2);
    	return 0;
    }
    

    上述代码注释掉的内容为将读取到的数据写入文件。如果读取到的数据太长,可以将数组容量扩大,或者用其他办法。

    展开全文
  • Linux读取系统信息

    2020-02-03 04:05:24
    POSIX.1定义了uname函数,它返回与主机和操作系统有关的信息。 #include <sys/utsname.h> int uname(struct utsname *name); 返回值:若成功,返回非负值;若出错,返回-1 通过该函数的参数向其传递一个 ...
        

    系统标识

    POSIX.1定义了uname函数,它返回与主机和操作系统有关的信息。

    #include <sys/utsname.h>
    int uname(struct utsname *name);
    

    返回值:若成功,返回非负值;若出错,返回-1 通过该函数的参数向其传递一个 utsname 结构的地址,然后该函数
    填写此结构。POSIX.1只定义了该结构中最少需提供的字段(它们都是 字符数组),而每个数组的长度则由实现确定。某些实现在该结构中提 供了另外一些字段。

    struct utsname {
    char sysname[ ]; /* name of the operating system */
    char nodename[ ]; /* name of this node */
    char release[ ]; /* current release of operating system
      */
          char version[ ]; /* current version of this release */
          char machine[ ]; /* name of hardware type */
    };
    

    每个字符串都以null字节结尾。本书讨论的4种平台支持的最大名字 长度(包含终止null字节)列于图6-7中。utsname结构中的信息通常可用 uname(1)命令打印。
    我们写一个简单的系统信息获取程序

    #include <iostream>
    #include <stdio.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <sys/stat.h>
    #include <sys/utsname.h>
    #include <string.h>
    #include <string>
    #define BUFFSIZE 4096
    int main(int argc, char * argv[]) {
    
        printf("this code is intended for simple system detecting\n");
        utsname sys_name;
        int ret = uname(&sys_name);
    
        printf("system_name : %s\n", sys_name.sysname);
        printf("node_name   : %s\n", sys_name.nodename);
        printf("release_ver : %s\n", sys_name.release);
        printf("version     : %s\n", sys_name.version);
        printf("machine     : %s\n", sys_name.machine);
    }
    
    4064394-43b5ca54d2f610e4.png
    image.png

    POSIX.1警告nodename元素可能并不适用于在通信网络上引用主 机。此函数来自于System V,在早期,nodename元素适用于在UUCP网络 上引用主机。
    还要认识到,在此结构中并没有给出有关POSIX.1版本的信息。应 当使用2.6节中所说明的_POSIX_VERSION获得该信息。
    最后,此函数只给出了一种获取该结构中信息的方法,至于如何初 始化这些信息,POSIX.1没有给出任何说明。

    历史上,BSD派生的系统提供gethostname函数,它只返回主机名, 该名字通常就是TCP/IP网络上主机的名字。

    #include <unistd.h>
    int gethostname(char *name, i n t namelen);
    

    hostname(1)命令可用来获取和设置主机名。(超级用户用一个类似 的函数 sethostname来设置主机名。)主机名通常在系统自举时设置,它 由/etc/rc或init取自一个启动文件。

    写一个小程序获取hostname

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <sys/stat.h>
    #include <sys/utsname.h>
    #include <sys/types.h>
    
    int main(int argc, char* argv[]) {
        std::cout << "this code is intended for get simple hostname" << std::endl;
        char name[255];
        // int len[20];
        int *p = new int[20];
        int ret = gethostname(name, sizeof(name));
        std::cout << "name " <<  name << std::endl;
        
        return 0;
    }
    

    结果就是自己设置在/etc/hosts里面的主机名


    4064394-f4fb6d2bbc8cb8c5.png
    image.png
    展开全文
  • Linux读取目录文件

    2019-07-16 17:39:00
    (2)、readdir函数调用一次后就会返回一个struct dirent类型的指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录项(所谓目录项就是目录中的一个子文件)。 (3)、readdir调用一次只能读出一...

    1、opendir与readdir函数

    (1)、opendir打开一个目录后得到一个DIR类型的的指针给readdir使用。

    (2)、readdir函数调用一次后就会返回一个struct dirent类型的指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录项(所谓目录项就是目录中的一个子文件)。

    (3)、readdir调用一次只能读出一个目录项,要想读出目录中的所有目录项必须多次调用readdir函数。readdir函数内部会记住哪个目录项已经被读过了哪个还没读,所以多次调用后不会重复返回已经返回过的目录项。当readdir函数返回NULL时就代表目录中的所有目录项已经读完了。

    2、可重入函数介绍

    (1)、有些函数是可重入的有些是不可重入的。可重入函数可以理解为是能被中断的函数,并且它被中断返回后也不会出现什么错误。不可重入函数可以理解为如果函数被中断的话,就会出现不可预料的错误。这是因为函数中使用了一些系统资源,比如全局变量区,中断向量表之类的。比如多个进程同时对一个文件进行写操作,如果没有同步机制的话,对文件的写入就会变得难以控制。

    (2)、readdir函数和我们之前接触的一些函数是不同的,首先readdir函数直接返回了一个结构体变量指针,因为readdir内部申请了内存并且给我们返回了地址。多次调用readdir时,其实readdir内部并不会重复申请内存而是使用第一次调用readdir时分配的那个内存。这种设计方法是readdir不可重入的关键。

    (3)、readdir在多次调用时是有关联的,这个关联也表明readdir函数是不可重入的。

    (4)、库函数中有一些函数当年刚开始提供的时候都是不可重入的,后来意识到这种方式不安全,所以重新封装了C库,提供了对应的可重复版本(一般是不可重入版本函数名+ _r )。

    转载于:https://www.cnblogs.com/jiangtongxue/p/11196399.html

    展开全文
  • linux 读取函数read

    千次阅读 2012-02-11 14:41:32
    名字  read 从一个文件描述符中读取 概要  #include  ssize_t read(int fd, void *buf, size_t count); ... read() 尝试从文件... 如果count是0,read()返回0并没有其他的结果。如果count比SSIZE_MAX大,则结
    名字
        read 从一个文件描述符中读取
    概要
        #include <unistd.h>
        ssize_t read(int fd, void *buf, size_t count);
    描述
        read() 尝试从文件描述符中读取多达count个字节到buf指向的缓冲里面。
        如果count是0,read()返回0并没有其他的结果。如果count比SSIZE_MAX大,则结果未指定
    返回值
        成功的话,返回读取的字节数(0意味着文件结束),文件位置要加上这个数。如果这个数比请求的字节数少这也并不是错误;这可能是因为例如实际上当前没有那么多字节可以读取,或者read函数被一个信号中断了。错误的话,返回-1,errno被正确的设置。这种情况下文件的位置是否改变未指定。
    错误值
        EAGAIN     文件描述符指向一个socket以外的文件,并被标志为非阻塞,read阻塞了。
        EAGAIN 或者 EWOULDBLOCK
        文件描述符指向socket并标识了非阻塞,read函数阻塞了。
        EBADF fd不是一个有效的描述符或者没有打开
        EFAULT buf超出了可用的地址空间
        EINTR 调用在数据被读之前被信号中断了。
        EINVAL fd附加到了一个不适合读取的对象上;或者文件被以O_DIRECT标志打开了,要不就是指定的缓冲地址/count/当前文件便宜没有恰当的对齐。
        EIO I/O错误。
        EISDIR fd指向了一个目录。
        在NFS文件系统,读取少量的数据将只在第一次更新时间戳,随后的调用可能不会这样做。这是大多数客户端属性缓存引起的,因为不是所有的NFS客户端把st_atime(最后文件的访问时间)更新到服务器,客户端从客户端的缓存完美的读取不会把st_atime更新到取服务器上因为有没有服务器端的读取。 UNIX语义可以获得通过禁用客户端属性缓存,但在大多数情况下,这将大大增加服务器的负载,降低性能。许多文件系统和磁盘被认为是够快以至于O_NONBLOCK的实现被认为是不必要的。因此,O_NONBLOCK可能无法使用在文件和/或磁盘上。
    展开全文
  • 今天和大家分享的是在工作中通过通过JSCH第三方链接linux执行相应命令,在等待读取返回结果流时阻塞,一直不返回,导致程序挂死的情况, 首先问题发生的原因,服务器大范围SSH版本升级导致 解决办法首先想到的就是...
  • 环境Ubuntu16.04 。安装的opencv,python3.7 cap.isOpened 输出false,出错原因在cv2.VideoCapture(filename)处。 解决方法,运行: pip install opencv-contrib-python
  • readdir  语法: struct dirent* readdir(DIR* dir_handle); ... 内容说明 本函数用来读取目录。返回目录中的文件名称,读取不依照inode,依据的是dirent结构中的d_off   inode in
  • (2)、readdir函数调用一次后就会返回一个struct dirent类型的指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录项(所谓目录项就是目录中的一个子文件)。(3)、readdir调用一次只能读出一个目录项...
  • Linux C语言管道读取

    千次阅读 2019-02-11 00:15:05
    管道读取写端已经关闭的管道,当数据全部读完后,写端返回0 #include &lt;unistd.h&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int ...
  • linux按行读取文件

    2020-12-01 08:48:44
    linux端通过java按行读返回Windows端后,会发现丢失换行符的问题,其原因在于,Unix系统换行符为\n而Windows换行符为\r\n 解决方法 import cn.hutool.core.io.FileUtil; String content = FileUtil.readUtf8...
  • 返回值:返回值为实际读取到的字节数, 如果返回0, 表示已到达文件尾或是无可读取的数据。若参数count 为0, 则read()不会有作用并返回0。 文件的写入: ssize_t write(int fd, const void *buf, size_t count); ...
  • c语言实现读取文本文件中的内容 并返回其中最长的行
  • 实现的功能就是串口的自收自发功能我用的事ch340 ch340的u口连接到笔记本上 ch340的串口端的rx 和tx用杜邦线连接在一起就是这样了但是现在问题是编译完成后发送可以发出去但是读取总是失败read返回值总是-1不知道...
  • 一般而言,用read函数读取文件,返回-1,表示读取失败,但是在非阻塞读取(设备/网络)文件时,当文件为空时,它会再额外设置一个errno返回值:EAGAIN or EWOULDBLOCK,来区分非阻塞读取文件为空和普通读取文件失败...
  • Linux简单的文件读取

    2018-02-26 13:49:00
    (1)linux中的文件描述符fd的合法范围是0或者一个正正数,不可能是一个负数。 (2)open返回的fd程序必须记录好,以后向这个文件的所有操作都要靠这个fd去对应这个文件,最后关闭文件时也需要fd去指定关闭这个文件。...
  • Linux C中的opendir头文件 #include #include 函数原型 DIR* opendir (const char * path ); 功能 打开一个目录,在失败的时候返回一个空的指针。 使用实例: #include #include #include int main(int ...
  • [LINUX]文件的读取过程

    2020-07-02 21:02:16
    文件打开和读取的过程:在调用open之后,在内核全局区域生成一条文件表的项,并填写了相关的运行时参数,然后,在进程的u区中在文件描述符表中也新生成了一个项,他的索引作为fd的值,返回给用户态,一般来看所有的...
  • read函数非阻塞读取会立即返回。 阻塞读取通过设置也可在没有数据时立即返回 #include <termios.h> struct termios tio; tio.c_cc[VTIME] = 0; // timeout in deciseconds for noncanonical read tio.c_cc...
  • #include #include #include #include #include #define MAX 1024 ...* 该函数返回参数指定目录下所有普通文件的数目。 */ int get_file_count(char *root) { DIR * dir; struct dirent * ptr;
  • 准备工作1、安装Ipython(请见”...Open函数接受文件名和打开模式作为参数,返回一个文件对象。工程师通过文件对象来操作文件,完成以后,调用文件对象的close方法关闭文件即可。例如,在当前目录下有一个名为da...
  • 代码如下#include #include #include #include #include #include #define FILEBUFFER_LENGTH 5000#define EMPTY_STR "//打开fileName指定的文件,从中读取第lineNumber行//返回值:成功返回1,失败返回0int get_...
  • 首先使用paramiko模块,封装连接服务器,输入命令方法,使用read()读取命令输入后的返回值,并返回为字符串 def server_conn(ip,command): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy...
  • linux c 文件读取操作一

    千次阅读 2012-10-10 16:39:43
    int open(const char *path, int oflages); int open(const char *paht, int oflags, mode_t mode); include: fcntl.h、sys/types.h、sys/stat.h ...result:成功则返回文件描述符,否则返回
  • 要想知道怎么通过C语言操作数据库,必须要了解这几个结构体的含义,这里只是简单说一下如果想要了解的更深入可以到网上搜一下C API数据类型1、MySQL结构...2、MySQL_RES结果代表返回的查询结果(select,show等)。也...
  • 前面了解过如何利用串口进行定时输出helloworld,下面我们利用串口进行读取。我们要区分下载用的控制串口和调试用的串口3,他们功能是不一样的。...读取串口主要是用read函数,返回的值表示读取的内容的...
  • Linux 上Qt读取中文文件路径问题

    千次阅读 2017-05-12 16:55:07
    最近在搞跨平台的事,把一个应用程序,从Windows,移植到Linux,使用的是Qt。但是遇到一个问题,QFile::exists文件,老是返回false,我已经确定文件在目录下存在,后来是这么解决的。 1. 把cpp文件的编码,转成UTF-...
  • epoll机制读取linux串口数据

    千次阅读 2016-06-14 10:04:43
    epoll和select相比,最大不同在于: 1epoll返回时已经明确的知道哪个sokcet fd发生了事件,不用再一个个比对。这样就提高了效率。 2select的FD_SETSIZE是有限止的,而epoll是没有限止的只与系统资源有关。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,193
精华内容 477
关键字:

linux读取返回

linux 订阅