Bu çok ilginç bir sorudur. MISRA C'yi anlamam, kritik sistemlerde C dilinin kullanımı için yönergeler sağlamasıdır. Ancak, system
işlevini içeren C dili standart kitaplığı, genellikle modern uygulamalarda genellikle kullanılan gömülü kodların toplamının küçük bir parçasıdır - genellikle gömülü sistemlerde bile.
Hiçbir zaman MISRA standartlarına yönelik bir uygulama geliştiremedim ve yalnızca MISRA yönergelerinin biraz daha eski (2004'ten sonraki) sürümünü bulabildim. Anlayabildiğim kadarıyla, MISRA, herhangi bir Linux tabanlı sistemde tipik olarak kullanabileceğiniz POSIX kütüphanesi işlevlerinin kullanımı konusunda sessizdir. MISRA gerçekten POSIX kütüphanesi fonksiyonları hakkında sessizse, bu durumda POSIX kütüphanesindeki tüm işlevlerin sınırlandırılmaması gerekir. Bu, C dil standardına göre değil, POSIX tarafından tanımlanan fork
, exec
ve popen
'u içerir. Üçten, popen
muhtemelen C system
işlevine işlevsellik/arabirimde benzerdir.
Bu nedenle, MISRA C'nin neden işlevinin kullanımını kısıtladığını ve aynı mantığın yukarıdaki üç işlevin kullanımı için geçerli olup olmadığını sormak isteyebilirsiniz.
MISRA'nın * sisteme * benzer * birşeye izin verdiğinden emin misiniz? Rasgele kod yürütme doğal olarak güvenli değildir. – molbdnilo
Aslında, kodumun MISRA uyumluluğunu denediğimde, sistem() 'nin yasaklanmış bir işlev olduğu konusunda hata veriyor. MISRA allos'un sisteme benzer bir şey olup olmadığından emin değilim. – BKT
Eğer gerçekten ** bir çağrıyı sistem() 'e kullanmanız gerekiyorsa ve bu kararla ilgili tüm sonuçları anlıyorsanız, bir proje sapmasını yükseltin (kitabın ilk bölümlerine bakın) ve hiyerarşinizi onaylatmasını sağlayın. – Andrew