我有一个要求。我的嵌入式系统由程序组成,该程序在启动时查找pendrive中的pendrive和特定目录。如果找到目录,则将其视为可引导设备。
考虑以下代码:
uint8 Check_BB_rootfs_Availability()
{
uint8 b_flag = 0x00;
dw_PkgAvailFlag |= BB_PKG_AVAIL_MASK;
if(!(system("ls /media1/sda/UPGRADE_FILES/BB/")))
{
path_argv[0] = "/media1/sda/UPGRADE_FILES/BB/rootfs.ubifs";
}
else if(!(system("ls /media1/sda1/UPGRADE_FILES/BB/")))
{
path_argv[0] = "/media1/sda/UPGRADE_FILES/BB/rootfs.ubifs";
}
else if(!(system("ls /media2/sda/UPGRADE_FILES/BB/")))
{
path_argv[0] = "/media2/sda/UPGRADE_FILES/BB/rootfs.ubifs";
}
else if(!(system("ls /media2/sda1/UPGRADE_FILES/BB/")))
{
path_argv[0] = "/media2/sda1/UPGRADE_FILES/BB/rootfs.ubifs";
}
else if(!(system("ls /media/sda/UPGRADE_FILES/BB/")))
{
path_argv[0] = "/media/sda/UPGRADE_FILES/BB/rootfs.ubifs";
}
else if(!(system("ls /media/sda1/UPGRADE_FILES/BB/")))
{
path_argv[0] = "/media/sda1/UPGRADE_FILES/BB/rootfs.ubifs";
}
else
{
/* Normal Boot */
dw_PkgAvailFlag &= ~(BB_PKG_AVAIL_MASK);
b_flag = 0x01;
}
return b_flag;
}
如果rootfs可用。我打电话给一个升级的脚本。
这可以用更好的方式完成,而不是使用if..else条件和systemcall。
另外我面临的另一个问题是当我使用system
电话时,我无法将char * path_argv[0]
作为system
电话的参数传递。我必须做的就是这个
system("/media/sda1/UPGRADE_FILES/BB/UPGRADEBB_File.sh '/media/sda1/UPGRADE_FILES/BB/rootfs.ubifs'");
可以某种方式我可以在不使用execv
调用的情况下传递指针,因为我不想创建新进程。