linux的c语言编程常用语句
2015-01-21 09:59
232 查看
针对main函数的argc,argv
使用poll函数
关闭文件操作
for (i = 1; i < argc ;) { if (0 == strcmp(argv[i], "-m") && (argc - i > 1)) { tty_modem = argv[i + 1]; i += 2; } else if (0 == strcmp(argv[i], "-p") && (argc - i > 1)) { tty_pc = argv[i + 1]; i += 2; } else if (0 == strcmp(argv[i], "-d") && (argc - i > 1)) { i += 2; } else if (0 == strcmp(argv[i], "-f") && (argc - i > 1)) { modem_config_file = argv[i + 1]; i += 2; } else if (0 == strcmp(argv[i], "-t") && (argc - i > 1)) { tunnel_switch = argv[i + 1]; if (0 == strncmp(tunnel_switch, "on", 2)) { tunnel_mode = 1; } i += 2; } }
使用poll函数
#define AT_CMD_OK 0 #define AT_CMD_REOPEN 1 #define AT_CMD_RESEND 2 result = wait_for_data (fd, 3000 ); if (result == AT_CMD_OK ) { if (read(fd, buf, buf_size-1) < 0) { LOGE(TAG"Read response from %s error, error num is %d\n", tty_name, errno); return -1; } } else if (result == AT_CMD_RESEND) { poll_cnt++; LOGD(TAG"Wait %s result, poll %s failed %d times\n", at_cmd, tty_name, poll_cnt); sleep(2); if (poll_cnt >= POLL_RETRY_MAX) return -1; } else { LOGD(TAG"Wait %s result, poll %s failed and need reopen.\n", at_cmd, tty_name); modem_hangup_flag = 1; return -1; } int wait_for_data( int fd, long wait_time_ms) { struct pollfd fds[1]; int poll_ret; int retVal = AT_CMD_OK; fds[0].fd = fd; fds[0].events = POLLIN; fds[0].revents = 0; poll_ret = poll( fds, 1, wait_time_ms); if ( 0 < poll_ret ) { if ( fds[0].revents & POLLHUP ) { LOGE(TAG"device hung up\n"); retVal = AT_CMD_REOPEN; goto Exit_Handler; } else if ( fds[0].revents & POLLIN ) { LOGV(TAG"Received response data\n"); } else { /* Not sure we will ever get here */ LOGE(TAG"Unexpected event while waiting for response\n"); retVal = AT_CMD_RESEND; goto Exit_Handler; } } else if ( 0 == poll_ret ) { LOGE(TAG"Timed out while waiting for response\n"); retVal = AT_CMD_RESEND; goto Exit_Handler; } else { LOGE(TAG"Error occured polling for response. errno: %d\n", errno); retVal = AT_CMD_RESEND; goto Exit_Handler; } retVal = AT_CMD_OK; Exit_Handler: return retVal; }
关闭文件操作
static void fdclose() { if (md_fd != -1) { close(md_fd); md_fd = -1; } if (pc_fd != -1) { /* Add errno trace in case that "unable write usb value" problem of BZ4161 is reproduced.*/ if (close(pc_fd) < 0) { LOGE("close(pc_fd:%d) failed, error: %d, %s\n", pc_fd, errno, strerror(errno)); } pc_fd = -1; } }
相关文章推荐
- C语言常用宏定义 __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程)
- 【嵌入式Linux C编程】2018.3.9 C语言中的常用关键字
- 一篇著名的Linux C语言编程初级入门文章
- Linux 网络编程常用函数和结构速查
- Linux编程常用的函数
- Linux下的c语言网络编程-将普通进程转换为守护进程
- 在LINUX下进行C语言编程所需要的基础知识
- MDI编程常用窗体控制语句
- Linux下面如何进行C语言编程
- Linux编程常用的函数(十一) 系统数据文件和信息
- Linux编程常用的函数(十) 标准I/O
- Linux下的C语言编程教程-Chinaitlab制作
- LINUX下进行C语言编程
- Linux下面如何进行C语言编程技术教程
- Linux:C语言编程:fread
- Linux网络编程常用函数
- Linux网络编程常用信息 结构 格式化 函数 等
- Linuxl下C编程系列--C语言(容易疏忽的问题)l
- Linux编程常用的函数(二) 线程
- LINUX下进行C语言编程所需要的基础知识.!!!